home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / metasploit / nops / Opty2.pm < prev    next >
Text File  |  2006-06-30  |  2KB  |  64 lines

  1.  
  2. ##
  3. # This file is part of the Metasploit Framework and may be redistributed
  4. # according to the licenses defined in the Authors field below. In the
  5. # case of an unknown or missing license, this file defaults to the same
  6. # license as the core Framework (dual GPLv2 and Artistic). The latest
  7. # version of the Framework can always be obtained from metasploit.com.
  8. ##
  9.  
  10. package Msf::Nop::Opty2;
  11. use strict;
  12. use base 'Msf::Nop::OptyNop2';
  13. use Pex::x86;
  14.  
  15. my $info = {
  16.   'Name'    => 'Optyx uber nop generator',
  17.   'Version' => '$Revision: 1.1 $',
  18.   'Authors' => [ 'spoonm <ninjatools [at] hush.com>', ],
  19.   'Arch'    => [ 'x86' ],
  20.   'Desc'    => 'Variable instruction length nop generator',
  21.   'Refs'    => [ ],
  22. };
  23.  
  24. my $advanced = {
  25.   'RandomNops' => [0, 'Use random nop equivalent instructions, otherwise default to 0x90'],
  26.  
  27. };
  28.  
  29. sub new {
  30.   my $class = shift; 
  31.   return($class->SUPER::new({'Info' => $info, 'Advanced' => $advanced}, @_));
  32. }
  33.  
  34. sub Nops {
  35.   my $self = shift;
  36.   my $length = shift;
  37.  
  38.   my $exploit = $self->GetVar('_Exploit');
  39.   my $random  = $self->GetVar('RandomNops');
  40.   my $badChars = $exploit->PayloadBadChars;
  41.  
  42.   my $badRegs = [ ];
  43.   foreach my $breg (@{$exploit->NopSaveRegs}) {
  44.     push(@{$badRegs}, Pex::x86::RegNameToNumber($breg));
  45.   }
  46.   $self->_BadRegs($badRegs);
  47.   $self->_BadChars($badChars);
  48.  
  49.   return($self->_GenerateSled($length));
  50. }
  51.  
  52. sub _BadRegs {
  53.   my $self = shift;
  54.   $self->{'_BadRegs'} = shift if(@_);
  55.   return($self->{'_BadRegs'});
  56. }
  57. sub _BadChars {
  58.   my $self = shift;
  59.   $self->{'_BadChars'} = shift if(@_);
  60.   return($self->{'_BadChars'});
  61. }
  62.  
  63. 1;
  64.